TINY={};

TINY.box=function(){
    var j,m,b,g,v,p=0;
    return{
        show:function(o){
            v={
                opacity:70,
                close:0,
                animate:1,
                fixed:1,
                mask:1,
                maskid:'',
                boxid:'',
                topsplit:2,
                url:0,
                post:0,
                height:0,
                width:0,
                html:0,
                iframe:0
            };
            for(s in o){
                v[s]=o[s]
                }
            if(!p){
                j=document.createElement('div');
                j.className='tbox';
                p=document.createElement('div');
                p.className='tinner';
                b=document.createElement('div');
                b.className='tcontent';
                m=document.createElement('div');
                m.className='tmask';
                g=document.createElement('div');
                g.className='tclose';
                g.v=0;
                document.body.appendChild(m);
                document.body.appendChild(j);
                j.appendChild(p);
                p.appendChild(b);
                m.onclick=g.onclick=TINY.box.hide;
                window.onresize=TINY.box.resize
            }else{
                j.style.display='none';
                clearTimeout(p.ah);
                if(g.v){
                    p.removeChild(g);
                    g.v=0
                    }
            }
            p.id=v.boxid;
            m.id=v.maskid;
            j.style.position=v.fixed?'fixed':'absolute';
            if(v.html&&!v.animate){
                p.style.backgroundImage='none';
                b.innerHTML=v.html;
                b.style.display='';
                p.style.width=v.width?v.width+'px':'auto';
                p.style.height=v.height?v.height+'px':'auto'
            }else{
                b.style.display='none'; 
                if(!v.animate&&v.width&&v.height){
                    p.style.width=v.width+'px';
                    p.style.height=v.height+'px'
                }else{
                    p.style.width=p.style.height='100px'
                }
            }
            if(v.mask){
                this.mask();
                this.alpha(m,1,v.opacity)
                }else{
                this.alpha(j,1,100)
                }
            if(v.autohide){
                p.ah=setTimeout(TINY.box.hide,1000*v.autohide)
                }else{
                document.onkeyup=TINY.box.esc
                }
        },
        fill:function(c,u,k,a,w,h){
            if(u){
                if(v.image){
                    var i=new Image();
                    i.onload=function(){
                        w=w||i.width;
                        h=h||i.height;
                        TINY.box.psh(i,a,w,h)
                        };                        
                    i.src=v.image
                }else if(v.iframe){
                    this.psh('<iframe src="'+v.iframe+'" width="'+v.width+'" frameborder="0" height="'+v.height+'"></iframe>',a,w,h)
                }else{
                    var x=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
                    x.onreadystatechange=function(){
                        if(x.readyState==4&&x.status==200){
                            p.style.backgroundImage='';
                            TINY.box.psh(x.responseText,a,w,h)
                            }
                    };
                    if(k){
                        x.open('POST',c,true);
                        x.setRequestHeader('Content-type','application/x-www-form-urlencoded');
                        x.send(k)
                    }else{
                        x.open('GET',c,true);
                        x.send(null)
                    }
                }
            }else{
                this.psh(c,a,w,h)
            }
        },
        psh:function(c,a,w,h){
            if(typeof c=='object'){
                b.appendChild(c)
                }else{
                b.innerHTML=c
                }
            var x=p.style.width, y=p.style.height;
            if(!w||!h){
                p.style.width=w?w+'px':'';
                p.style.height=h?h+'px':'';
                b.style.display='';
                if(!h){
                    h=parseInt(b.offsetHeight)
                    }
                if(!w){
                    w=parseInt(b.offsetWidth)
                    }
                b.style.display='none'
            }
            p.style.width=x;
            p.style.height=y;
            this.size(w,h,a)
        },
        esc:function(e){
            e=e||window.event;
            if(e.keyCode==27){
                TINY.box.hide()
                }
            },
    hide:function(){
        TINY.box.alpha(j,-1,0,3);
        document.onkeypress=null;
        if(v.closejs){
            v.closejs()
            }
        },
resize:function(){
    TINY.box.pos();
    TINY.box.mask()
    },
mask:function(){
    m.style.height=this.total(1)+'px';
    m.style.width=this.total(0)+'px'
    },
pos:function(){
    var t;
    if(typeof v.top!='undefined'){
        t=v.top
        }else{
        t=(this.height()/v.topsplit)-(j.offsetHeight/2);
        t=t<20?20:t
        }
    if(!v.fixed&&!v.top){
        t+=this.top()
        }
    j.style.top=t+'px'; 
    j.style.left=typeof v.left!='undefined'?v.left+'px':(this.width()/2)-(j.offsetWidth/2)+'px'
},
alpha:function(e,d,a){
    clearInterval(e.ai);
    if(d){
        e.style.opacity=0;
        e.style.filter='alpha(opacity=0)';
        e.style.display='block';
        TINY.box.pos()
        }
    e.ai=setInterval(function(){
        TINY.box.ta(e,a,d)
        },20)
},
ta:function(e,a,d){
    var o=Math.round(e.style.opacity*100);
    if(o==a){
        clearInterval(e.ai);
        if(d==-1){
            e.style.display='none';
            e==j?TINY.box.alpha(m,-1,0,2):b.innerHTML=p.style.backgroundImage=''
        }else{
            if(e==m){
                this.alpha(j,1,100)
            }else{
                j.style.filter='';
                TINY.box.fill(v.html||v.url,v.url||v.iframe||v.image,v.post,v.animate,v.width,v.height)
            }
        }
    }else{
        var n=a-Math.floor(Math.abs(a-o)*.5)*d;
        e.style.opacity=n/100;
        e.style.filter='alpha(opacity='+n+')'
    }
},
size:function(w,h,a){
    if(a){
        clearInterval(p.si);
        var wd=parseInt(p.style.width)>w?-1:1, hd=parseInt(p.style.height)>h?-1:1;
        p.si=setInterval(function(){
            TINY.box.ts(w,wd,h,hd)
            },20)
    }else{
        p.style.backgroundImage='none';
        if(v.close){
            p.appendChild(g);
            g.v=1
            }
        p.style.width=w+'px';
        p.style.height=h+'px';
        b.style.display='';
        this.pos();
        if(v.openjs){
            v.openjs()
            }
    }
},
ts:function(w,wd,h,hd){
    var cw=parseInt(p.style.width), ch=parseInt(p.style.height);
    if(cw==w&&ch==h){
        clearInterval(p.si);
        p.style.backgroundImage='none';
        b.style.display='block';
        if(v.close){
            p.appendChild(g);
            g.v=1
            }
        if(v.openjs){
            v.openjs()
            }
    }else{
        if(cw!=w){
            p.style.width=(w-Math.floor(Math.abs(w-cw)*.6)*wd)+'px'
            }
        if(ch!=h){
            p.style.height=(h-Math.floor(Math.abs(h-ch)*.6)*hd)+'px'
            }
        this.pos()
    }
},
top:function(){
    return document.documentElement.scrollTop||document.body.scrollTop
    },
width:function(){
    return self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth
    },
height:function(){
    return self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight
    },
total:function(d){
    var b=document.body, e=document.documentElement;
    return d?Math.max(Math.max(b.scrollHeight,e.scrollHeight),Math.max(b.clientHeight,e.clientHeight)):
    Math.max(Math.max(b.scrollWidth,e.scrollWidth),Math.max(b.clientWidth,e.clientWidth))
}
}
}();